﻿using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using PmSadis.Models.Abstract;
using System;
using System.Collections.Generic;
using System.Linq;

namespace PmSadis.Models
{
    /// <summary>
    /// Пользователь программного модуля
    /// </summary>
    [Table("D_USERS")]
    public class SadisUser : IRedactModel
    {
        /// <summary>
        /// Идентификатор пользователя
        /// </summary>
        [Column("USER_ID")]
        [Key]
        public int UserId { get; set; }

        /// <summary>
        /// Логин пользователя
        /// </summary>
        [Column("USER_NAME")]
        public string UserName { get; set; }

        /// <summary>
        /// Дата создания
        /// </summary>
        [Column("DATE_CREATE")]
        public DateTime DateCreate { get; set; }

        /// <summary>
        /// Дата последнего редактирования
        /// </summary>
        [Column("DATE_UPDATE")]
        public DateTime DateUpdate { get; set; }

        /// <summary>
        /// Имя для отображения 
        /// </summary>
        [Column("DISPLAY_NAME")]
        [Required]
        public string DisplayName { get; set; }
        
        /// <summary>
        ///Контракты пользователя 
        /// </summary>
        public virtual IQueryable<SubContract> SubContracts { get; set; }
    }

    /// <summary>
    /// Пользователь для использования в администраторе
    /// </summary>
    [NotMapped]
    public class SadisUserForAdmin : SadisUser
    {
        /// <summary>
        /// Пароль
        /// </summary>
        public string Password { get; set; }

        /// <summary>
        /// Роли
        /// </summary>
        public string Roles { get; set; }
    }
}
